There is a growing trend to incorporate computer-like functions into television or television-based devices. For example, entertainment devices, typically used with televisions, are now available that combine traditional television programming with interactive content, such as content obtained from the Internet or some other source. When using devices such as these, interactive visual and audio content are often rendered by the television equipment rather than by dedicated computer peripherals.
In the desktop computer environment, substantial attention has been given to designing appropriate methods of user interaction. At the moment, the Windows® desktop family of operating systems, available from Microsoft Corporation, utilizes what seems to be the most popular form of user interface.
The Windows® desktop operating systems emphasize the use of a mouse in conjunction with an on-screen pointer and a plurality of on-screen objects or controls. The mouse can be moved across a flat surface in different directions to produce a corresponding analog and continuous movement of the on-screen pointer. This method of moving a pointer is sometimes referred to as “roaming.”
Objects or controls, also referred to as icons, represent functions or items that are available for a user to select. To select an object, the user moves the pointer over the object and depresses or “clicks” a button on the mouse. The operating system responds by performing an appropriate action, depending on the nature of the selected object.
Although this type of user interface works well in the desktop environment, it is not nearly as effective when transferred to the television or home entertainment environment. In this environment, the user is typically sitting on a couch or recliner at some distance from the image displayed by the television. As a further complication, most televisions have much lower display resolutions than typical computer monitors. These factors make it somewhat more difficult to display and position objects and mouse pointers. Additionally, the user's viewing situation often does not lend itself to use of a mouse. Rather, the user is often more comfortable with an IR (infrared) input device with more rudimentary controls such as a set of orthogonal directional keys. Finally, apart from physical constraints, positioning an on-screen pointer simply requires more concentration than a casual user is willing to put forth during a time intended for relaxation or recreation.
And as a result of these factors, many television-related products now use a so-called “tabbing” focus movement model. This model constrains the user's movement to a limited to set of displayed objects. Rather than using a continuously moveable the pointer, a “focus” is moved around the display between different objects. The focus is generally indicated by highlighting or otherwise changing the appearance of the focused object. In some cases, a highlighted frame is positioned around the object that has been assigned the focus.
Generally, one and only one item has the focus at any given time. To select an object, the user moves the focus from object to object using directional keys or some other type of directional control operators. But as opposed to the roaming model discussed above, the focus “tabs,” “jumps,” or moves abruptly from one focused object to the next. When the focus is on the desired object, the user pushes an “action” key to select the object.
Significant effort has been put into ensuring that the focus responds in expected or predictable ways in response to user inputs. However, so-called “active content” has presented difficulties in this regard.
In the past, visual content has been primarily defined by a text markup language such as HTML (hypertext markup language). An HTML document or specification is read, interpreted, and displayed by a software component such as a browser. The HTML text defines the locations of focusable objects (referred to herein as focus targets), which are often hyperlinks or references to other HTML content.
In this situation, the browser is able to determine the relative locations of the focus targets, and is thus able to tab a focus among those targets in a predictable fashion in response to user directional inputs. The browser is also able to scroll the displayed content as appropriate to ensure the visibility of any focus target that has currently been assigned the focus.
Active content, on the other hand, is generated by a program component other than the browser. In the case of active content, the HTML document contains a reference to a program component that is instantiated and executed to generate a portion of an overall piece of visual content. A program component such as this is referred to herein as an active visual control or an active content component. An ActiveX® control is an example of an active content component. ActiveX® controls can be written in a variety of different programming languages, such as C, C+, and Visual Basic. A Java applet is another example of an active content component or module. Active content components can also take the form of executable scripts such programs written in JavaScript or VBScript.
An active program component such as described above typically comprises an independent body of code, separate from the body of code that implements the browser component. In many cases, the two distinct bodies of code are implemented by different companies. Coordination between the browser and any of its active program components is by way of well defined program interfaces.
The visual content generated by an active content component can have selectable objects. Typically, the active content component itself responds to activation or selection of such objects, in ways that are determined by the particular programmed characteristics of the component.
In the more common desktop environment, when using a roaming cursor such as a mouse-controlled pointer, movement among the selectable objects of an active control is seamless. Specifically, a computer's operating system manages mouse-controlled pointer movement and signals the browser when the mouse is clicked at a point within the area controlled by the browser, also providing the coordinates of the pointer at the time of the mouse click. If the pointer happens to be over the content generated by the active control, the browser passes the mouse-click information to the active control, and the active control determines whether the supplied coordinates correspond to one of its selectable objects and responds in accordance with its programmed characteristics.
When using a tabbed focus metaphor, however, seamless movement has not been possible. In this situation, the browser treats an active control as a single selectable object. When the focus moves to the active content, the active object is notified that it is now responsible for the focus, and further directional inputs from the user are directed through the browser to the code underlying the active content.
Generally, the active content responds by initially assigning the focus to a default one of its focus targets. In some cases, this is adequate. In other cases, however, the default focus target is not the natural choice when the focus targets of the active control are evaluated in the larger context of the all the focus targets that are currently being displayed—including those that are not part of the active content. For example, a user might have pressed an “up” key to move the focus into an active control having a column of potential focus targets. The natural behavior in this situation would be for the focus to move to the bottom one of the active control's focus targets. However, it might be the case that the top one of the control's focus targets is the default target, and the focus would therefore bypass the lower targets and jump immediately to the top focus target. This behavior can be disorienting to a user. Similar disorienting behavior can result when tabbing the focus out of the control, back into the focus targets that are under the control of the browser.